home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODF & Cyberdog / ODFCyberLibrary / Sources / FWCyStrm.h < prev    next >
Encoding:
Text File  |  1996-08-16  |  2.0 KB  |  93 lines  |  [TEXT/MPS ]

  1. //-----------------------------------------------------------------------------
  2. //    FWCyStrm.h
  3. //
  4. //    Copyright (c) 1995 - 1996 by Apple Computer, Inc., all rights reserved.
  5. //-----------------------------------------------------------------------------
  6.  
  7. #ifndef _FW_CyberdogStreamUtilities_
  8. #define _FW_CyberdogStreamUtilities_
  9.  
  10. extern const short FW_kCyberStreamDone; // = kCDErrorOccurred | kCDDownloadComplete | kCDAbortComplete
  11.  
  12. /*
  13.     FW_CCyberStream is an envelope class for CyberStream.
  14.     It ensures that CyberStream will be deleted when you're done
  15.     with it. It also makes sure that Abort is properly called if 
  16.     the stream has not been fully read.
  17. */
  18.  
  19. class CyberStream;
  20.  
  21. class FW_CCyberStream {
  22. public:
  23.                     FW_DECLARE_AUTO (FW_CCyberStream)
  24.                     FW_CCyberStream (CyberStream* cs = kODNULL);
  25.                     ~FW_CCyberStream ();
  26.     FW_CCyberStream& operator= (CyberStream* cs);
  27.     void             Assign (CyberStream* cs);
  28.     CyberStream*     operator -> ();
  29.                     operator CyberStream* ();
  30. private:
  31.     CyberStream*     fStream;
  32.     // Copy construction and assignment is not supported.
  33. private:
  34.                     FW_CCyberStream (const FW_CCyberStream& );
  35.     FW_CCyberStream& operator= (const FW_CCyberStream& );
  36. };
  37.  
  38. /*
  39.     FW_CCyberBuffer is an envelope class for a buffer aquired from a
  40.     CyberStream. This ensures it is released back to the stream.
  41. */
  42.  
  43. class FW_CCyberBuffer {
  44. public:
  45.                     FW_DECLARE_AUTO (FW_CCyberBuffer)
  46.                     FW_CCyberBuffer (Environment* ev, CyberStream* cs);
  47.                     ~FW_CCyberBuffer ();
  48.     Size            GetSize()            { return fSize; }
  49.     Ptr                GetBuffer()            { return fBuffer; }
  50. private:
  51.     CyberStream*     fStream;
  52.     Ptr             fBuffer;
  53.     Size             fSize;
  54. };
  55.  
  56. /*
  57.     Boring inlines.
  58. */
  59.  
  60. inline 
  61. FW_CCyberStream::FW_CCyberStream (CyberStream* cs = kODNULL)
  62. :    fStream(cs)
  63. {
  64. }
  65.  
  66. inline 
  67. FW_CCyberStream::~FW_CCyberStream ()
  68. {
  69.     Assign(kODNULL);
  70. }
  71.  
  72. inline 
  73. FW_CCyberStream& FW_CCyberStream::operator= (CyberStream* cs)
  74. {
  75.     Assign(cs);
  76.     return *this;
  77. }
  78.  
  79. inline CyberStream* 
  80. FW_CCyberStream::operator -> ()
  81. {
  82.     return fStream;
  83. }
  84.  
  85. inline 
  86. FW_CCyberStream::operator CyberStream* ()
  87. {
  88.     return fStream;
  89. }
  90.  
  91. #endif // _FW_CyberdogStreamUtilities_
  92.  
  93.